//
// Created by longyunbo on 6/23/21.
//

#ifndef ANALYSIS_DATATRANSLATE_H
#define ANALYSIS_DATATRANSLATE_H
#include "string"

using namespace std;

typedef union FLOAT_CONV {
    float f;
    char c[4];
} float_conv ;

typedef union DOUBLE_CONV {
    double d;
    char c[8];
} double_conv;


typedef union floatInLong{
    float f;
    long l;
} fl;

typedef union doubleInLong{
    double d;
    long l;
} dl;

typedef union FloatToChar{
    float f;
    char* c;
};

typedef union LongToChar{
    long l;
    char* c;
};


class DataTranslate {

    /* 用x替换a */
public:
    string replaceAWithX(string str);

    //int类型 小端转大端
    int smallToBigEndU4(int value);

    //short 类型
    short smallToBigEndU2( short value );

    //long 类型
    long smallToLong( long value );

    //float 大小端转换
    float floatb2l(float value);

    //double大小端转换
    double doubleb2l(double value);

    //flota转long 让我看看你的浮点数 听话 让我看看 看看你发育正不正常啦
    long floatToLong( float value );

    //long转float 不要啦！ 杰哥
    float longToFloat( long value );

    //double系列 这个double 就是逊啦!
    //double转Long (食指指向double)逊！
    long doubleToLong( double value );

    //long转double (大拇指指向自己)勇!
    double longToDouble( long value );

    char* floatToChar(float va);

    char* longToChar(long va);

    long* charToLong(char* va);

    float charToFloat(char* va);
};


#endif //ANALYSIS_DATATRANSLATE_H
